package com.easyShop.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.easyShop.common.QueryPageParam;
import com.easyShop.common.Result;
import com.easyShop.entity.Productlist; // 确保这里导入的是 ProductList 实体类
import com.easyShop.service.ProductListService; // 确保服务类是针对 ProductList 的
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;

/**
 * <p>
 * 商品列表 前端控制器
 * </p>
 *
 * @author wms
 * @since 2022-10-15
 */
@RestController
@RequestMapping("/productList") // 更新路由为 productList
public class ProductListController { // 更新控制器名称为 ProductListController

    @Autowired
    private ProductListService productListService; // 更新服务类为 ProductListService

    // 新增
    @PostMapping("/save")
    public Result save(@RequestBody Productlist productList){ // 更新参数类型为 ProductList
        return productListService.save(productList) ? Result.suc() : Result.fail();
    }

    // 更新
    @PostMapping("/update")
    public Result update(@RequestBody Productlist productList){ // 更新参数类型为 ProductList
        return productListService.updateById(productList) ? Result.suc() : Result.fail();
    }

    // 删除
    @GetMapping("/del")
    public Result del(@RequestParam String id){ // 更新参数类型为 Long
        return productListService.removeById(id) ? Result.suc() : Result.fail();
    }

    @PostMapping("/listPage")
    public Result listPage(@RequestBody QueryPageParam query){
        HashMap<String, Object> param = query.getParam(); // 更新 HashMap 的键类型为 String
        String name = (String) param.get("name");

        Page<Productlist> page = new Page<>(); // 更新 Page 类型为 ProductList
        page.setCurrent(query.getPageNum());
        page.setSize(query.getPageSize());

        LambdaQueryWrapper<Productlist> lambdaQueryWrapper = new LambdaQueryWrapper<>(); // 更新 LambdaQueryWrapper 类型为 ProductList
        if(StringUtils.isNotBlank(name) && !"null".equals(name)){
            lambdaQueryWrapper.like(Productlist::getName, name); // 更新方法引用为 ProductList 的 getName
        }

        IPage<Productlist> result = productListService.page(page, lambdaQueryWrapper); // 更新 IPage 类型为 ProductList
        return Result.suc(result.getRecords(), result.getTotal());
    }

    @GetMapping("/list")
    public Result list(){
        List<Productlist> list = productListService.list(); // 更新 List 类型为 ProductList
        return Result.suc(list);
    }
}